package com.rongji.dfish.ui.form;

import java.util.List;

import com.rongji.dfish.ui.MultiContainer;
import com.rongji.dfish.ui.layout.AbstractLayout;

/**
 * Period 时间段控件，3.x中的时间段控件实际上就是一个容器，里面可以放置begin和end两个时间选择框。
 * @author DFish Team
 *
 */
public class Period extends AbstractLayout<Period,DatePicker>implements LabelRow<Period>,MultiContainer<Period,DatePicker>{
	private String label;
	private DatePicker begin;
	private DatePicker end;
	private Boolean hideLabel;
	private Boolean star;
	/**
	 * 构造函数
	 */
	public Period() {
		// FIXME Period加不了DatePicker,临时解决
		super(null);
	}
	/**
	 * 构造函数
	 * @param label String
	 * @param begin 
	 * @param end 
	 */
	public Period(String label, DatePicker begin, DatePicker end) {
		super(null);
		this.label=label;
		this.begin=begin;
		this.end=end;
	}
	/**
	 * 开始时间控件
	 * @return DatePicker
	 */
	public DatePicker getBegin() {
		return begin;
	}
	/**
	 * 开始时间控件
	 * @param begin DatePicker
	 * @return this
	 */
	public Period setBegin(DatePicker begin) {
		this.begin = begin;
		return this;
	}
	/**
	 * 结束时间控件
	 * @return DatePicker
	 */
	public DatePicker getEnd() {
		return end;
	}
	/**
	 * 结束时间控件
	 * @param end DatePicker
	 * @return this
	 */
	public Period setEnd(DatePicker end) {
		this.end = end;
		return this;
	}
	

	@Override
	public String getType() {
		return "period";
	}

	@Override
	public Period setLabel(String label) {
		this.label=label;
		return this;
	}
	
	@Deprecated
	public Period setTitle(String label) {
		this.label=label;
		return this;
	}

	@Override
	public String getLabel() {
		return label;
	}

	@Override
	public Period setHideLabel(Boolean hideLabel) {
		this.hideLabel=hideLabel;
		return this;
	}

	@Override
	public Boolean getHideLabel() {
		return hideLabel;
	}
	 /**
     * 这个元素，是否非空，这里非空不是dfish2.4以后的真实判断，而是在界面显示一个非空标记
     * 通常是红色字体的半角星号(*)
     * @param notnull boolean
     * @return 本身，这样可以继续设置其他属性
     * @since 3.0
     * @deprecated notnull 属性已经被 required替代
     */

	@Deprecated
	public Period setNotnull(Boolean notnull) {
		return setStar(notnull);
	}

	@Override
	public Period setStar(Boolean star) {
		this.star=star;
		return this;
	}

	@Override
	public Boolean getStar() {
		return star;
	}
	@Override
	public List<DatePicker> getNodes() {
		return nodes;
	}

}
